#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "file_attente_patient.h"
void ajouter_patient_attente(FILE* FICHE_PATIENT_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;

    int etat ;
    FICHE_PATIENT_ATTENTE = fopen ("patient_attente.txt" , "a" );
    printf("Donner le nom\n");
    scanf("%s",nom);
    printf("Donner le prenom\n");
    scanf("%s",prenom);
    printf("Donner l'age\n");
    scanf("%d",&age);
    printf("Donner le cin\n");
    scanf("%ld",&cin);

    etat=1 ;
    fprintf(FICHE_PATIENT_ATTENTE, "%20s %20s %3d %8ld %1d\n",nom,prenom,age,cin,etat);

    fclose(FICHE_PATIENT_ATTENTE);
}

void afficher_patient_attente(FILE* FICHE_PATIENT_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;

    int etat ;
    int n ;
    n=nbre_patient_attente(FICHE_PATIENT_ATTENTE);
    FICHE_PATIENT_ATTENTE = fopen("patient_attente.txt", "r");
    if(FICHE_PATIENT_ATTENTE==NULL)
    {
        printf("\n Impossible d'ouvrir le fichier\n");
    }
    else
    {
        if(n==0)
        {
            printf("\n La liste de patients en attente est vide\n");
        }
        else
        {

            while (!feof(FICHE_PATIENT_ATTENTE))
            {
                fscanf(FICHE_PATIENT_ATTENTE, "%s\n",nom);
                fscanf(FICHE_PATIENT_ATTENTE, "%s\n",prenom);
                fscanf(FICHE_PATIENT_ATTENTE, "%d\n",&age);
                fscanf(FICHE_PATIENT_ATTENTE, "%ld\n",&cin);

                fscanf(FICHE_PATIENT_ATTENTE, "%d\n",&etat);
                printf("nom=%s prenom=%s age=%d cin=%ld etat=%d\n",nom,prenom,age,cin,etat);
            }
        }
        fclose(FICHE_PATIENT_ATTENTE);
    }
}
void initialiser_patient_attente(FILE* FICHE_PATIENT_ATTENTE)
{
    FICHE_PATIENT_ATTENTE = fopen ("patient_attente.txt" , "w" );

    fclose(FICHE_PATIENT_ATTENTE);


}

void recherche_patient_attente(FILE *FICHE_PATIENT_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;

    int etat ;
    int test ;
    int cin1 ;
    FICHE_PATIENT_ATTENTE = fopen("patient_attente.txt", "r");
    test = 0;
    printf("donner la cin a chercher: ");
    scanf("%d",&cin1);
    while ( !feof(FICHE_PATIENT_ATTENTE) && test == 0)
    {

        fscanf(FICHE_PATIENT_ATTENTE, "%s\n",nom);
        fscanf(FICHE_PATIENT_ATTENTE, "%s\n",prenom);
        fscanf(FICHE_PATIENT_ATTENTE, "%d\n",&age);
        fscanf(FICHE_PATIENT_ATTENTE, "%ld\n",&cin);

        fscanf(FICHE_PATIENT_ATTENTE, "%d\n",&etat);

        if (cin == cin1)
        {
            test=1;

        }
    }
    if (test == 0) printf("ce patient est inexistant");
    else
    {
        printf("\n ce patient existe\n") ;
        printf("nom=%s prenom=%s age=%d cin=%ld etat=%d\n",nom,prenom,age,cin,etat);
    }

    fclose(FICHE_PATIENT_ATTENTE);
}
void menu_patient_attente(FILE* FICHE_PATIENT_ATTENTE)
{

    int i;
    FICHE_PATIENT_ATTENTE = fopen("patient_attente.txt", "a");

    printf("\n1:initialiser patient attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("2:afficher patient attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("3:ajouter patient attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("4:supprimer patient attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("5:rechercher patient attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("6:nombre patient attente \n");
    printf("*****************************************\n");
    printf("*****************************************\n");
    printf("taper autre bouton pour quitter ce menu \n");
    printf("*****************************************\n");
    printf("*****************************************\n");



    printf ("donner votre choix \n");
    scanf("%d",&i);

    switch (i)
    {
    case 1:
        initialiser_patient_attente(FICHE_PATIENT_ATTENTE);
        menu_patient_attente(FICHE_PATIENT_ATTENTE);
        break;
    case 2:
        afficher_patient_attente(FICHE_PATIENT_ATTENTE);
        menu_patient_attente(FICHE_PATIENT_ATTENTE);
        break;
    case 3:
        ajouter_patient_attente(FICHE_PATIENT_ATTENTE);
        menu_patient_attente(FICHE_PATIENT_ATTENTE);
        break;
    case 4:
        supprimer_patient_attente(FICHE_PATIENT_ATTENTE);
        menu_patient_attente(FICHE_PATIENT_ATTENTE);
        break;
    case 5:
        recherche_patient_attente(FICHE_PATIENT_ATTENTE);
        menu_patient_attente(FICHE_PATIENT_ATTENTE);
        break;
    case 6:
        nbre_patient_attente(FICHE_PATIENT_ATTENTE);
        menu_patient_attente(FICHE_PATIENT_ATTENTE);
        break;
    default :

        break;
    }
    fclose(FICHE_PATIENT_ATTENTE);
}

void supprimer_patient_attente(FILE * FICHE_PATIENT_ATTENTE)
{
    char nom[20];
    char prenom[20];
    int age;
    long int cin;

    int etat ;
    int cin1 ;
    FILE *tmp ;
    FICHE_PATIENT_ATTENTE = fopen("patient_attente.txt", "r");
    tmp = fopen("tmp.txt", "w");

    printf("donner la cin a supprimer: ");
    scanf("%d",&cin1);

    while ( !feof(FICHE_PATIENT_ATTENTE) )
    {

        fscanf(FICHE_PATIENT_ATTENTE, "%s\n",nom);
        fscanf(FICHE_PATIENT_ATTENTE, "%s\n",prenom);
        fscanf(FICHE_PATIENT_ATTENTE, "%d\n",&age);
        fscanf(FICHE_PATIENT_ATTENTE, "%ld\n",&cin);

        fscanf(FICHE_PATIENT_ATTENTE, "%d\n",&etat);
        if (cin != cin1)
        {

            fprintf(tmp, "%20s %20s %3d %8ld %1d\n",nom,prenom,age,cin,etat);

        }
    }

    remove("patient_attente.txt");
    rename("tmp.txt","patient_attente.txt");

    fclose(FICHE_PATIENT_ATTENTE);
    fclose (tmp);
    printf("suppression terminee: ");

}
int nbre_patient_attente(FILE * FICHE_PATIENT_ATTENTE)
{

    char nom[20];
    char prenom[20];
    int age;
    long int cin;
    long int matricule;
    int etat ;

    int nbpaa = 0;
    FICHE_PATIENT_ATTENTE = fopen("patient_attente.txt", "r");
    if (FICHE_PATIENT_ATTENTE==NULL)
    {
        printf("\n Impossible d'ouvrir le fichier\n");
    }
    else
    {
        while(fscanf(FICHE_PATIENT_ATTENTE,"%s %s %d %ld %ld %d",nom,prenom,&age,&cin,&matricule,&etat)!=EOF)
        {
            nbpaa++;
        }
        fclose(FICHE_PATIENT_ATTENTE);
    }
    printf("\n Le nombre de patients en attente est %d : \n",nbpaa);
    return nbpaa;
}


